package com.xing.config.shiro.tag;

import com.jagregory.shiro.freemarker.PermissionTag;
import org.apache.shiro.subject.Subject;

/**
 * Created by Bradish7Y on 2017/9/13.
 * custom shiro permission tag
 */
public class HasAnyPermissionsTag extends PermissionTag {
    private static final long serialVersionUID = 1L;
    private static final String PERMISSION_NAMES_DELIMETER = ",";


    @Override
    protected boolean showTagBody(String permissionNames) {
        boolean hasAnyPermission = false;

        Subject subject = getSubject();

        if (subject != null) {
            // Iterate through permissions and check to see if the user has one of the permissions
            for (String permission : permissionNames.split(PERMISSION_NAMES_DELIMETER)) {
                if (subject.isPermitted(permission.trim())) {
                    hasAnyPermission = true;
                    break;
                }
            }
        }

        return hasAnyPermission;
    }
}
